package com.jingxuan.service;

import com.jingxuan.dto.request.ProductsKeywordSearchRequest;
import com.jingxuan.dto.request.ProductsWeightSearchRequest;
import com.jingxuan.dto.response.ProductStandardizeResponse;
import com.jingxuan.dto.response.ProductsResponse;
import com.jingxuan.dto.response.CompareProductsResponse;
import com.jingxuan.dto.response.SimilarProductsResponse;
import com.jingxuan.dto.request.CompareProductsRequest;

public interface ProductsService {

    /**
     * 根据关键词搜索商品
     * 
     * @param request 搜索请求参数
     * @return 搜索结果
     */
    ProductsResponse searchProducts(ProductsKeywordSearchRequest request);

    /**
     * 根据关键词和权重搜索商品
     *
     * @param request 带权重的搜索请求参数
     * @return 搜索结果
     */
    ProductsResponse searchProductsWithWeights(ProductsWeightSearchRequest request);

    /**
     * 获取商品详情
     *
     * @param productId 商品ID
     * @return 商品详情
     */
    com.jingxuan.dto.response.ProductResponse getProductDetail(String productId);

    /**
     * 获取相似商品
     *
     * @param productId 商品ID
     * @param limit 限制返回数量
     * @return 相似商品列表
     */
    SimilarProductsResponse getSimilarProducts(String productId, Integer limit);

    /**
     * 基础比价：根据给定的商品ID集合以及用户偏好计算排序结果.
     *
     * @param request 比价请求参数
     * @return 排序后的比价结果
     */
    CompareProductsResponse compareProducts(CompareProductsRequest request);

    /**
     * 商品数据标准化
     *
     * @param productId 商品ID
     * @return 标准化后的商品信息
     */
    ProductStandardizeResponse standardizeProduct(String productId);

    /**
     * 添加商品
     */
    com.jingxuan.dto.response.ProductResponse addProduct(com.jingxuan.dto.request.ProductSaveRequest request);

    /**
     * 更新商品
     */
    com.jingxuan.dto.response.ProductResponse updateProduct(String productId, com.jingxuan.dto.request.ProductSaveRequest request);

    /**
     * 删除商品
     */
    void deleteProduct(String productId);

    /**
     * 管理端商品分页
     */
    ProductsResponse listProducts(com.jingxuan.dto.request.ProductListRequest request);
}
